package info.yeohwah.ai;

import cn.xsshome.taip.nlp.TAipNlp;
import cn.xsshome.taip.ptu.TAipPtu;
import cn.xsshome.taip.speech.TAipSpeech;
import com.alibaba.fastjson.JSON;

import static info.yeohwah.ai.utils.Base64Utils.GenerateFile;

import info.yeohwah.ai.utils.AIBeanFactory;

/**
 * 腾讯AI启动类
 */
public class App {

    /**
     * The entry point of application.
     *
     * @param args the input arguments
     * @throws Exception the exception
     */
    public static void main(String[] args) throws Exception {
        chatDemo("你是谁");
    }


    /**
     * Ps image.
     * 图像处理
     *
     * @throws Exception the exception
     */
    public void testPtu() throws Exception {
        TAipPtu aipPtu = AIBeanFactory.getTAipPtu();
        String imagePath = "G:/test2.jpg";
//        String result = aipPtu.faceCosmetic(imagePath, 23);//人脸美妆
        String result = aipPtu.faceDecoration(imagePath, 8);//人脸变妆
//        String result = aipPtu.imgFilter(imagePath, 20);//滤镜 天天P图
//        String result = aipPtu.visionImgfilter(imagePath, 32, String.valueOf(new Date().getTime()));//滤镜 AI Lab
//        String result = aipPtu.faceMerge(imagePath, 12);//人脸融合
//        String result = aipPtu.faceSticker(imagePath, 27);//大头贴
//        String result = aipPtu.faceAge(imagePath);//颜龄检测
        System.out.println(result);
        String data = JSON.parseObject(result).getString("data");
        String image = JSON.parseObject(data).getString("image");
        String filePath = "G://result" + System.currentTimeMillis() + ".jpg";
        GenerateFile(image, filePath);
    }

    /**
     * Voice handler.
     * 语音处理
     *
     * @throws Exception the exception
     */
    public static void testSpeech() throws Exception {
        TAipSpeech aipSpeech = AIBeanFactory.getAipSpeech();
//        String filePath ="./VOICE1513237078.pcm";//本地文件路径
//        byte[] audio = FileUtil.readFileByBytes(filePath);//获取文件的byte数据
//        String result = aipSpeech.asrEcho(filePath, 1);//语音识别-echo版
//        String result = aipSpeech.asrLab(1, 16000, 0, 1024, 1, audio);//语音识别-流式版（AI Lab）
//        String result = aipSpeech.asrWx(filePath, 1, 16000, 16, 0, 1024, 1, 1);//语音识别-流式版(WeChat AI)
        String text = "测试数据";
//        String result = aipSpeech.TtaSynthesis(text);//语音合成（优图）     默认参数
        String result = aipSpeech.TtaSynthesis(text, 6, 0);//语音合成（优图）     全部参数
//        String result = aipSpeech.TtsSynthesis(text, 1, 3);//语音合成（AI Lab） 默认参数
//        String result = aipSpeech.TtsSynthesis(text,1,3,0,100,0,58);//语音合成（AI Lab） 全部参数
//        String result = aipSpeech.asrLong("G:/voice"+System.currentTimeMillis()+".pcm", 1, "http://yourwebsitename.com/methodname");//长语音识别
        System.out.println(result);
        String data = JSON.parseObject(result).getString("data");
        String image = JSON.parseObject(data).getString("voice");
        String filePath = "G://result" + System.currentTimeMillis() + ".mp3";
        GenerateFile(image, filePath);
    }

    /**
     * Test nlp.
     * 自然语言处理
     * @throws Exception the exception
     */
    public static void testNlp() throws Exception {
        TAipNlp aipNlp = AIBeanFactory.getTAipNlp();
        String session = System.currentTimeMillis() / 1000 + "";
        String filePath = "G://test1.jpg";
        String filePath2 = "G://test.mp3";
//        String result = aipNlp.nlpWordseg("这是测试数据");//分词
//        String result = aipNlp.nlpWordpos("这是个非常棒的测试数据");//词性标注
//        String result = aipNlp.nlpWordner("最近张学友在深圳开了一场演唱会");//专有名词
//        String result = aipNlp.nlpWordsyn("今天的天气怎么样");//同义词
//        String result = aipNlp.nlpWordcom("今天南京的天气怎么样？明天呢");//意图成分
//        String result = aipNlp.nlpTextpolar("他真的好厉害");//情感分析
        String result = aipNlp.nlpTextchat(session, "北京天气");//基础闲聊
//        String result = aipNlp.nlpTextTrans(0, "你真是太厉害了");//文本翻译（AI Lab）
//        String result = aipNlp.nlpTextTranslate("你真是太厉害了", "zh", "en");//文本翻译（翻译君）
//        String result = aipNlp.nlpImageTranslate(filePath, session, "doc","zh", "en");//图片翻译
//        String result = aipNlp.nlpSpeechTranslate(6, 0, 1, session, filePath2,"zh", "en");//语音翻译
//        String result = aipNlp.nlpTextDetect("こんにちは", 0);//语种识别
        System.out.println(result);
    }

    /**
     * Chat demo.
     * 聊天机器人递归自调用
     * @param firstChat the first chat
     * @throws Exception the exception
     */
    public static void chatDemo(String firstChat) throws Exception {
        TAipNlp aipNlp = AIBeanFactory.getTAipNlp();
        String session = System.currentTimeMillis() / 1000 + "";
        String chatString = aipNlp.nlpTextchat(session, firstChat);
        String answer = JSON.parseObject(JSON.parseObject(chatString).getString("data")).getString("answer");
        System.out.println(answer);
        chatDemo(answer);
    }
}
